// src/api/system.js
import { http } from '@/util/request'

/**
 * 获取机构列表
 * @param {string} keyword - 搜索关键词（可选）
 * @returns {Promise} 返回机构列表
 */
export function getOrganizationList(keyword) {
  return http.get('/system/organization/list', { keyword })
}

/**
 * 获取机构选项（用于下拉选择）
 * @param {string} organizationId - 机构ID（可选）
 * @returns {Promise} 返回机构选项列表
 */
export function getOrganizationOptions(organizationId) {
  return http.get('/system/organization/options', { organizationId })
}

/**
 * 新增机构
 * @param {Object} data - 机构数据
 * @returns {Promise} 返回新增的机构信息
 */
export function createOrganization(data) {
  return http.post('/system/organization', data)
}

/**
 * 更新机构
 * @param {number|string} id - 机构ID
 * @param {Object} data - 机构数据（不包含code，code不可修改）
 * @returns {Promise} 返回更新后的机构信息
 */
export function updateOrganization(id, data) {
  return http.put(`/system/organization/${id}`, data)
}

/**
 * 删除机构
 * @param {number|string} id - 机构ID
 * @returns {Promise} 返回删除结果
 */
export function deleteOrganization(id) {
  return http.delete(`/system/organization/${id}`)
}

/**
 * 获取职位列表
 * @param {string} keyword - 搜索关键词（可选）
 * @param {number|string} organizationId - 机构ID（可选），如果提供则只返回该机构下的职位
 * @returns {Promise} 返回职位列表
 */
export function getPositionList(keyword, organizationId) {
  const params = {}
  if (keyword) params.keyword = keyword
  if (organizationId) params.organizationId = organizationId
  return http.get('/system/position/list', params)
}

/**
 * 获取职位选项（用于下拉选择）
 * @param {string} organizationId - 机构ID（可选）
 * @returns {Promise} 返回职位选项列表
 */
export function getPositionOptions(organizationId) {
  return http.get('/system/position/options', { organizationId })
}

/**
 * 新增职位
 * @param {Object} data - 职位数据
 * @returns {Promise} 返回新增的职位信息
 */
export function createPosition(data) {
  return http.post('/system/position', data)
}

/**
 * 更新职位
 * @param {number|string} id - 职位ID
 * @param {Object} data - 职位数据（不包含code，code不可修改）
 * @returns {Promise} 返回更新后的职位信息
 */
export function updatePosition(id, data) {
  return http.put(`/system/position/${id}`, data)
}

/**
 * 删除职位
 * @param {number|string} id - 职位ID
 * @returns {Promise} 返回删除结果
 */
export function deletePosition(id) {
  return http.delete(`/system/position/${id}`)
}
